package com.ruoyi.config.pdf.common;

import com.itextpdf.kernel.colors.DeviceRgb;
import com.itextpdf.kernel.font.PdfFont;
import com.itextpdf.layout.borders.Border;
import com.itextpdf.layout.element.Cell;
import com.itextpdf.layout.element.Paragraph;
import com.itextpdf.layout.element.Table;
import com.itextpdf.layout.element.Text;
import com.ruoyi.config.pdf.vo.PdfReqVo;

import java.util.List;

/**
 * 和Template一一对应
 * 例如：
 * addFinalTwoPart1-->template1
 * addFinalTwoPart2-->template2
 *
 * @author yjc
 * @create 2023-04-20 11:43
 */
public class FinalTemp {

    /**
     * 填充上半部分
     * 模板1和4通用
     *
     * @param sysFont
     * @param cellList
     * @param cellLen
     * @param table
     * @param reqVo
     */
    public static void addFinalTwoPart1And4(PdfFont sysFont, List<Integer> cellList, int cellLen, Table table, PdfReqVo reqVo) {
        Cell cell;
        List<String> finalDataList = reqVo.getFinalDataList();
        if (finalDataList.size() != 5) {
            throw new RuntimeException("模板" + reqVo.getTemplate() + "中数据数量有误");
        }
        cell = new Cell(1, cellLen - (cellList.get(0) + cellList.get(1)));
        table.addCell(cell
                .setBorderBottom(Border.NO_BORDER)
                .add(new Paragraph("经审核，同意以上 "+ finalDataList.get(0)  +" 人参加九江市安全生产知识和管理能力考试。考试安排如下：")
                        .add("\n")
                        .add("1.考试类别：")
                        .add(new Text("                 " + finalDataList.get(1) + "            ").setUnderline(.75f, -1))
                        .add(";")
                        .add("\n")
                        .add("2.考 试 点：")
                        .add(new Text("                   " + finalDataList.get(2) + "              ").setUnderline(.75f, -1))
                        .add(";")
                        .add("\n")
                        .add("3.考试时间：")
                        .add(new Text("                 " + finalDataList.get(3) + "          ").setUnderline(.75f, -1))
                        .add(";")
                        .add("\n")
                        .add("4.补考时间：")
                        .add(new Text("                 " + finalDataList.get(4) + "          ").setUnderline(.75f, -1))
                        .add(";")
                        .setFontSize(8f)
                        .setFont(sysFont)));
    }

    /**
     * 填充上半部分
     * 模板2
     *
     * @param sysFont
     * @param cellList
     * @param cellLen
     * @param table
     * @param reqVo
     */
    public static void addFinalTwoPart2(PdfFont sysFont, List<Integer> cellList, int cellLen, Table table, PdfReqVo reqVo) {
        Cell cell;
        List<String> finalDataList = reqVo.getFinalDataList();
        if (finalDataList.size() != 5) {
            throw new RuntimeException("模板" + reqVo.getTemplate() + "中数据数量有误");
        }
        cell = new Cell(1, cellLen - (cellList.get(0) + cellList.get(1)));
        table.addCell(cell
                .setBorderBottom(Border.NO_BORDER)
                .add(new Paragraph("以上")
                        .add("  " + finalDataList.get(0) + "  ")
                        .add("人是我培训机构")
                        .add("  " + finalDataList.get(1) + "  ")
                        .add("年第")
                        .add("  " + finalDataList.get(2) + "  ")
                        .add("期")
                        .add("  " + finalDataList.get(3) + "  ")
                        .add("人员")
                        .add("  " + finalDataList.get(4) + "  ")
                        .add("(取证或复审）培训班的学员，均接受了《安全生产法》等法律法规规定的安全生产培训，并经我单位确认安全培训合格。上述证明材料完全属实，若有不实愿承担相应损失及法律责任。特此证明。")
                        .setFontSize(8f)
                        .setFont(sysFont)));
    }

    /**
     * 填充上半部分
     * 模板3
     *
     * @param sysFont
     * @param cellList
     * @param cellLen
     * @param table
     * @param reqVo
     */
    public static void addFinalTwoPart3(PdfFont sysFont, List<Integer> cellList, int cellLen, Table table, PdfReqVo reqVo) {
        Cell cell;
        List<String> finalDataList = reqVo.getFinalDataList();
        if (finalDataList.size() != 5) {
            throw new RuntimeException("模板" + reqVo.getTemplate() + "中数据数量有误");
        }
        cell = new Cell(1, cellLen - (cellList.get(0) + cellList.get(1)));
        table.addCell(cell
                .setBorderBottom(Border.NO_BORDER)
                .add(new Paragraph("以上")
                        .add("  " + finalDataList.get(0) + "  ")
                        .add("人是我培训机构")
                        .add("  " + finalDataList.get(1) + "  ")
                        .add("年第")
                        .add("  " + finalDataList.get(2) + "  ")
                        .add("期")
                        .add("  " + finalDataList.get(3) + "  ")
                        .add("人员")
                        .add("  " + finalDataList.get(4) + "  ")
                        .add(new Text("(取证或复审）").setFontColor(new DeviceRgb(248, 0, 0)))
                        .add("培训班的学员，均接受了《安全生产法》等法律法规规定的安全生产培训，并经我单位确认安全培训合格。上述证明材料完全属实，若有不实愿承担相应损失及法律责任。特此证明。")
                        .setFontSize(8f)
                        .setFont(sysFont)));
    }

    /**
     * 填充上半部分
     * 模板5
     *
     * @param sysFont
     * @param cellList
     * @param cellLen
     * @param table
     * @param reqVo
     */
    public static void addFinalTwoPart5(PdfFont sysFont, List<Integer> cellList, int cellLen, Table table, PdfReqVo reqVo) {
        Cell cell;
        List<String> finalDataList = reqVo.getFinalDataList();
        if (finalDataList.size() != 1) {
            throw new RuntimeException("模板" + reqVo.getTemplate() + "中数据数量有误");
        }
        cell = new Cell(1, cellLen - (cellList.get(0) + cellList.get(1)));
        table.addCell(cell
                .setBorderBottom(Border.NO_BORDER)
                .add(new Paragraph("同意对以上")
                        .add(new Text(" " + finalDataList.get(0) + " ").setUnderline(.75f, -1))
                        .add("人颁发《安全生产知识和管理能力考核合格证》。")
                        .setFontSize(8f)
                        .setFont(sysFont)));
    }

    /**
     * 填充上半部分
     * 模板6
     *
     * @param sysFont
     * @param cellList
     * @param cellLen
     * @param table
     * @param reqVo
     */
    public static void addFinalTwoPart6(PdfFont sysFont, List<Integer> cellList, int cellLen, Table table, PdfReqVo reqVo) {
        Cell cell;
        List<String> finalDataList = reqVo.getFinalDataList();
        if (finalDataList.size() != 1) {
            throw new RuntimeException("模板" + reqVo.getTemplate() + "中数据数量有误");
        }
        cell = new Cell(1, cellLen - (cellList.get(0) + cellList.get(1)));
        table.addCell(cell
                .setBorderBottom(Border.NO_BORDER)
                .add(new Paragraph("同意对以上")
                        .add(new Text(" " + finalDataList.get(0) + " ").setUnderline(.75f, -1))
                        .add("人颁发《特种作业操作证》。")
                        .setFontSize(8f)
                        .setFont(sysFont)));
    }

    /**
     * 填充上半部分
     * 模板7
     *
     * @param sysFont
     * @param cellList
     * @param cellLen
     * @param table
     * @param reqVo
     */
    public static void addFinalTwoPart7And8(PdfFont sysFont, List<Integer> cellList, int cellLen, Table table, PdfReqVo reqVo) {
        Cell cell;
        List<String> finalDataList = reqVo.getFinalDataList();
        if (finalDataList.size() != 1) {
            throw new RuntimeException("模板" + reqVo.getTemplate() + "中数据数量有误");
        }
        cell = new Cell(1, cellLen - (cellList.get(0) + cellList.get(1)));
        table.addCell(cell
                .setBorderBottom(Border.NO_BORDER)
                .add(new Paragraph("以上")
                        .add(new Text(" " + finalDataList.get(0) + " ").setUnderline(.75f, -1))
                        .add("人考试合格。")
                        .setFontSize(8f)
                        .setFont(sysFont)));
    }
}
